﻿/*
 * File Name:               XTriangleTable.cs
 *
 * Description:             整型基础数学库
 * Author:                  zhangwei
 * Create Date:             2016/12/30
 */

internal class XTriangleTable
{
    public static readonly int[] cosTable = {
            1024,1024,1023,1023,1023,1023,1023,1023,1023,1023,1023,
            1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,
            1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,
            1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,
            1023,1023,1023,1023,1023,1022,1022,1022,1022,1022,
            1022,1022,1022,1022,1022,1022,1022,1022,1022,1022,
            1022,1022,1022,1022,1021,1021,1021,1021,1021,1021,
            1021,1021,1021,1021,1021,1021,1021,1021,1020,1020,
            1020,1020,1020,1020,1020,1020,1020,1020,1020,1020,
            1019,1019,1019,1019,1019,1019,1019,1019,1019,1019,
            1019,1018,1018,1018,1018,1018,1018,1018,1018,1018,
            1017,1017,1017,1017,1017,1017,1017,1017,1017,1016,
            1016,1016,1016,1016,1016,1016,1016,1016,1015,1015,
            1015,1015,1015,1015,1015,1014,1014,1014,1014,1014,
            1014,1014,1014,1013,1013,1013,1013,1013,1013,1013,
            1012,1012,1012,1012,1012,1012,1011,1011,1011,1011,
            1011,1011,1011,1010,1010,1010,1010,1010,1010,1009,
            1009,1009,1009,1009,1009,1008,1008,1008,1008,1008,
            1008,1007,1007,1007,1007,1007,1006,1006,1006,1006,
            1006,1006,1005,1005,1005,1005,1005,1004,1004,1004,
            1004,1004,1003,1003,1003,1003,1003,1002,1002,1002,
            1002,1002,1001,1001,1001,1001,1001,1000,1000,1000,
            1000,1000,999,999,999,999,998,998,998,998,
            998,997,997,997,997,996,996,996,996,996,
            995,995,995,995,994,994,994,994,993,993,
            993,993,992,992,992,992,991,991,991,991,
            990,990,990,990,989,989,989,989,988,988,
            988,988,987,987,987,987,986,986,986,985,
            985,985,985,984,984,984,984,983,983,983,
            982,982,982,982,981,981,981,980,980,980,
            980,979,979,979,978,978,978,978,977,977,
            977,976,976,976,975,975,975,975,974,974,
            974,973,973,973,972,972,972,971,971,971,
            970,970,970,970,969,969,969,968,968,968,
            967,967,967,966,966,966,965,965,965,964,
            964,964,963,963,963,962,962,962,961,961,
            961,960,960,959,959,959,958,958,958,957,
            957,957,956,956,956,955,955,955,954,954,
            953,953,953,952,952,952,951,951,950,950,
            950,949,949,949,948,948,948,947,947,946,
            946,946,945,945,944,944,944,943,943,943,
            942,942,941,941,941,940,940,939,939,939,
            938,938,937,937,937,936,936,935,935,935,
            934,934,933,933,932,932,932,931,931,930,
            930,930,929,929,928,928,927,927,927,926,
            926,925,925,924,924,924,923,923,922,922,
            921,921,921,920,920,919,919,918,918,918,
            917,917,916,916,915,915,914,914,913,913,
            913,912,912,911,911,910,910,909,909,908,
            908,908,907,907,906,906,905,905,904,904,
            903,903,902,902,901,901,901,900,900,899,
            899,898,898,897,897,896,896,895,895,894,
            894,893,893,892,892,891,891,890,890,889,
            889,888,888,887,887,886,886,885,885,884,
            884,883,883,882,882,881,881,880,880,879,
            879,878,878,877,877,876,876,875,875,874,
            874,873,873,872,872,871,870,870,869,869,
            868,868,867,867,866,866,865,865,864,864,
            863,863,862,861,861,860,860,859,859,858,
            858,857,857,856,855,855,854,854,853,853,
            852,852,851,850,850,849,849,848,848,847,
            847,846,845,845,844,844,843,843,842,841,
            841,840,840,839,839,838,837,837,836,836,
            835,835,834,833,833,832,832,831,831,830,
            829,829,828,828,827,826,826,825,825,824,
            823,823,822,822,821,820,820,819,819,818,
            817,817,816,816,815,814,814,813,813,812,
            811,811,810,810,809,808,808,807,807,806,
            805,805,804,803,803,802,802,801,800,800,
            799,798,798,797,797,796,795,795,794,793,
            793,792,792,791,790,790,789,788,788,787,
            786,786,785,784,784,783,783,782,781,781,
            780,779,779,778,777,777,776,775,775,774,
            773,773,772,772,771,770,770,769,768,768,
            767,766,766,765,764,764,763,762,762,761,
            760,760,759,758,758,757,756,756,755,754,
            754,753,752,751,751,750,749,749,748,747,
            747,746,745,745,744,743,743,742,741,741,
            740,739,738,738,737,736,736,735,734,734,
            733,732,731,731,730,729,729,728,727,727,
            726,725,724,724,723,722,722,721,720,719,
            719,718,717,717,716,715,715,714,713,712,
            712,711,710,709,709,708,707,707,706,705,
            704,704,703,702,702,701,700,699,699,698,
            697,696,696,695,694,693,693,692,691,691,
            690,689,688,688,687,686,685,685,684,683,
            682,682,681,680,679,679,678,677,676,676,
            675,674,673,673,672,671,670,670,669,668,
            667,667,666,665,664,664,663,662,661,660,
            660,659,658,657,657,656,655,654,654,653,
            652,651,650,650,649,648,647,647,646,645,
            644,644,643,642,641,640,640,639,638,637,
            636,636,635,634,633,633,632,631,630,629,
            629,628,627,626,625,625,624,623,622,622,
            621,620,619,618,618,617,616,615,614,614,
            613,612,611,610,610,609,608,607,606,606,
            605,604,603,602,601,601,600,599,598,597,
            597,596,595,594,593,593,592,591,590,589,
            588,588,587,586,585,584,584,583,582,581,
            580,579,579,578,577,576,575,574,574,573,
            572,571,570,569,569,568,567,566,565,564,
            564,563,562,561,560,559,559,558,557,556,
            555,554,554,553,552,551,550,549,549,548,
            547,546,545,544,543,543,542,541,540,539,
            538,538,537,536,535,534,533,532,532,531,
            530,529,528,527,526,526,525,524,523,522,
            521,520,520,519,518,517,516,515,514,514,
            513,512,511,510,509,508,507,507,506,505,
            504,503,502,501,500,500,499,498,497,496,
            495,494,493,493,492,491,490,489,488,487,
            486,486,485,484,483,482,481,480,479,479,
            478,477,476,475,474,473,472,471,471,470,
            469,468,467,466,465,464,463,463,462,461,
            460,459,458,457,456,455,455,454,453,452,
            451,450,449,448,447,446,446,445,444,443,
            442,441,440,439,438,437,437,436,435,434,
            433,432,431,430,429,428,427,427,426,425,
            424,423,422,421,420,419,418,417,417,416,
            415,414,413,412,411,410,409,408,407,406,
            406,405,404,403,402,401,400,399,398,397,
            396,395,394,394,393,392,391,390,389,388,
            387,386,385,384,383,382,382,381,380,379,
            378,377,376,375,374,373,372,371,370,369,
            369,368,367,366,365,364,363,362,361,360,
            359,358,357,356,355,354,354,353,352,351,
            350,349,348,347,346,345,344,343,342,341,
            340,339,338,338,337,336,335,334,333,332,
            331,330,329,328,327,326,325,324,323,322,
            321,320,320,319,318,317,316,315,314,313,
            312,311,310,309,308,307,306,305,304,303,
            302,301,300,300,299,298,297,296,295,294,
            293,292,291,290,289,288,287,286,285,284,
            283,282,281,280,279,278,277,277,276,275,
            274,273,272,271,270,269,268,267,266,265,
            264,263,262,261,260,259,258,257,256,255,
            254,253,252,251,250,249,248,248,247,246,
            245,244,243,242,241,240,239,238,237,236,
            235,234,233,232,231,230,229,228,227,226,
            225,224,223,222,221,220,219,218,217,216,
            215,214,213,212,211,210,209,209,208,207,
            206,205,204,203,202,201,200,199,198,197,
            196,195,194,193,192,191,190,189,188,187,
            186,185,184,183,182,181,180,179,178,177,
            176,175,174,173,172,171,170,169,168,167,
            166,165,164,163,162,161,160,159,158,157,
            156,155,154,153,152,151,150,149,148,147,
            146,145,145,144,143,142,141,140,139,138,
            137,136,135,134,133,132,131,130,129,128,
            127,126,125,124,123,122,121,120,119,118,
            117,116,115,114,113,112,111,110,109,108,
            107,106,105,104,103,102,101,100,99,98,
            97,96,95,94,93,92,91,90,89,88,
            87,86,85,84,83,82,81,80,79,78,
            77,76,75,74,73,72,71,70,69,68,
            67,66,65,64,63,62,61,60,59,58,
            57,56,55,54,53,52,51,50,49,48,
            47,46,45,44,43,42,41,40,39,38,
            37,36,35,34,33,32,31,30,29,28,
            27,26,25,24,23,22,21,20,19,18,
            17,16,15,14,13,12,11,10,9,8,
            7,6,5,4,3,2,1,
            0,
            -1,-2,-3,-4,-5,-6,-7,
            -8,-9,-10,-11,-12,-13,-14,-15,-16,-17,
            -18,-19,-20,-21,-22,-23,-24,-25,-26,-27,
            -28,-29,-30,-31,-32,-33,-34,-35,-36,-37,
            -38,-39,-40,-41,-42,-43,-44,-45,-46,-47,
            -48,-49,-50,-51,-52,-53,-54,-55,-56,-57,
            -58,-59,-60,-61,-62,-63,-64,-65,-66,-67,
            -68,-69,-70,-71,-72,-73,-74,-75,-76,-77,
            -78,-79,-80,-81,-82,-83,-84,-85,-86,-87,
            -88,-89,-90,-91,-92,-93,-94,-95,-96,-97,
            -98,-99,-100,-101,-102,-103,-104,-105,-106,-107,
            -108,-109,-110,-111,-112,-113,-114,-115,-116,-117,
            -118,-119,-120,-121,-122,-123,-124,-125,-126,-127,
            -128,-129,-130,-131,-132,-133,-134,-135,-136,-137,
            -138,-139,-140,-141,-142,-143,-144,-145,-146,-147,
            -147,-148,-149,-150,-151,-152,-153,-154,-155,-156,
            -157,-158,-159,-160,-161,-162,-163,-164,-165,-166,
            -167,-168,-169,-170,-171,-172,-173,-174,-175,-176,
            -177,-178,-179,-180,-181,-182,-183,-184,-185,-186,
            -187,-188,-189,-190,-191,-192,-193,-194,-195,-196,
            -197,-198,-199,-200,-201,-202,-203,-204,-205,-206,
            -207,-208,-209,-210,-211,-211,-212,-213,-214,-215,
            -216,-217,-218,-219,-220,-221,-222,-223,-224,-225,
            -226,-227,-228,-229,-230,-231,-232,-233,-234,-235,
            -236,-237,-238,-239,-240,-241,-242,-243,-244,-245,
            -246,-247,-248,-249,-249,-250,-251,-252,-253,-254,
            -255,-256,-257,-258,-259,-260,-261,-262,-263,-264,
            -265,-266,-267,-268,-269,-270,-271,-272,-273,-274,
            -275,-276,-277,-278,-278,-279,-280,-281,-282,-283,
            -284,-285,-286,-287,-288,-289,-290,-291,-292,-293,
            -294,-295,-296,-297,-298,-299,-300,-301,-301,-302,
            -303,-304,-305,-306,-307,-308,-309,-310,-311,-312,
            -313,-314,-315,-316,-317,-318,-319,-320,-321,-321,
            -322,-323,-324,-325,-326,-327,-328,-329,-330,-331,
            -332,-333,-334,-335,-336,-337,-338,-339,-339,-340,
            -341,-342,-343,-344,-345,-346,-347,-348,-349,-350,
            -351,-352,-353,-354,-355,-355,-356,-357,-358,-359,
            -360,-361,-362,-363,-364,-365,-366,-367,-368,-369,
            -369,-370,-371,-372,-373,-374,-375,-376,-377,-378,
            -379,-380,-381,-382,-383,-383,-384,-385,-386,-387,
            -388,-389,-390,-391,-392,-393,-394,-395,-395,-396,
            -397,-398,-399,-400,-401,-402,-403,-404,-405,-406,
            -406,-407,-408,-409,-410,-411,-412,-413,-414,-415,
            -416,-417,-418,-418,-419,-420,-421,-422,-423,-424,
            -425,-426,-427,-428,-428,-429,-430,-431,-432,-433,
            -434,-435,-436,-437,-438,-438,-439,-440,-441,-442,
            -443,-444,-445,-446,-447,-447,-448,-449,-450,-451,
            -452,-453,-454,-455,-456,-456,-457,-458,-459,-460,
            -461,-462,-463,-464,-464,-465,-466,-467,-468,-469,
            -470,-471,-472,-472,-473,-474,-475,-476,-477,-478,
            -479,-479,-480,-481,-482,-483,-484,-485,-486,-486,
            -487,-488,-489,-490,-491,-492,-493,-494,-495,-495,
            -496,-497,-498,-499,-500,-501,-501,-502,-503,-504,
            -505,-506,-507,-508,-508,-509,-510,-511,-512,-513,
            -514,-515,-515,-516,-517,-518,-519,-520,-521,-521,
            -522,-523,-524,-525,-526,-527,-527,-528,-529,-530,
            -531,-532,-533,-533,-534,-535,-536,-537,-538,-538,
            -539,-540,-541,-542,-543,-544,-544,-545,-546,-547,
            -548,-549,-550,-550,-551,-552,-553,-554,-555,-555,
            -556,-557,-558,-559,-560,-560,-561,-562,-563,-564,
            -565,-566,-566,-567,-568,-569,-570,-570,-571,-572,
            -573,-574,-575,-575,-576,-577,-578,-579,-580,-580,
            -581,-582,-583,-584,-585,-585,-586,-587,-588,-589,
            -589,-590,-591,-592,-593,-594,-594,-595,-596,-597,
            -598,-598,-599,-600,-601,-602,-602,-603,-604,-605,
            -606,-607,-607,-608,-609,-610,-611,-611,-612,-613,
            -614,-615,-615,-616,-617,-618,-619,-619,-620,-621,
            -622,-623,-623,-624,-625,-626,-626,-627,-628,-629,
            -630,-630,-631,-632,-633,-634,-634,-635,-636,-637,
            -638,-638,-639,-640,-641,-641,-642,-643,-644,-645,
            -645,-646,-647,-648,-648,-649,-650,-651,-651,-652,
            -653,-654,-655,-655,-656,-657,-658,-658,-659,-660,
            -661,-661,-662,-663,-664,-665,-665,-666,-667,-668,
            -668,-669,-670,-671,-671,-672,-673,-674,-674,-675,
            -676,-677,-677,-678,-679,-680,-680,-681,-682,-683,
            -683,-684,-685,-686,-686,-687,-688,-689,-689,-690,
            -691,-692,-692,-693,-694,-694,-695,-696,-697,-697,
            -698,-699,-700,-700,-701,-702,-703,-703,-704,-705,
            -705,-706,-707,-708,-708,-709,-710,-710,-711,-712,
            -713,-713,-714,-715,-716,-716,-717,-718,-718,-719,
            -720,-721,-721,-722,-723,-723,-724,-725,-725,-726,
            -727,-728,-728,-729,-730,-730,-731,-732,-732,-733,
            -734,-735,-735,-736,-737,-737,-738,-739,-739,-740,
            -741,-742,-742,-743,-744,-744,-745,-746,-746,-747,
            -748,-748,-749,-750,-750,-751,-752,-752,-753,-754,
            -755,-755,-756,-757,-757,-758,-759,-759,-760,-761,
            -761,-762,-763,-763,-764,-765,-765,-766,-767,-767,
            -768,-769,-769,-770,-771,-771,-772,-773,-773,-774,
            -774,-775,-776,-776,-777,-778,-778,-779,-780,-780,
            -781,-782,-782,-783,-784,-784,-785,-786,-786,-787,
            -787,-788,-789,-789,-790,-791,-791,-792,-793,-793,
            -794,-794,-795,-796,-796,-797,-798,-798,-799,-799,
            -800,-801,-801,-802,-803,-803,-804,-804,-805,-806,
            -806,-807,-808,-808,-809,-809,-810,-811,-811,-812,
            -812,-813,-814,-814,-815,-815,-816,-817,-817,-818,
            -818,-819,-820,-820,-821,-821,-822,-823,-823,-824,
            -824,-825,-826,-826,-827,-827,-828,-829,-829,-830,
            -830,-831,-831,-832,-832,-833,-833,-834,-835,-835,
            -836,-836,-837,-837,-838,-839,-839,-840,-840,-841,
            -841,-842,-843,-843,-844,-844,-845,-845,-846,-847,
            -847,-848,-848,-849,-849,-850,-850,-851,-852,-852,
            -853,-853,-854,-854,-855,-855,-856,-857,-857,-858,
            -858,-859,-859,-860,-860,-861,-861,-862,-863,-863,
            -864,-864,-865,-865,-866,-866,-867,-867,-868,-869,
            -869,-869,-870,-870,-871,-872,-872,-873,-873,-874,
            -874,-875,-875,-876,-876,-877,-877,-878,-878,-879,
            -879,-880,-880,-881,-881,-882,-882,-883,-883,-884,
            -884,-885,-885,-886,-886,-887,-887,-888,-888,-889,
            -889,-890,-890,-891,-891,-892,-892,-893,-893,-894,
            -894,-895,-895,-896,-896,-897,-897,-898,-898,-899,
            -899,-900,-900,-901,-901,-901,-902,-902,-903,-903,
            -904,-904,-905,-905,-906,-906,-907,-907,-908,-908,
            -908,-909,-909,-910,-910,-911,-911,-912,-912,-913,
            -913,-913,-914,-914,-915,-915,-916,-916,-917,-917,
            -918,-918,-918,-919,-919,-920,-920,-921,-921,-921,
            -922,-922,-923,-923,-924,-924,-924,-925,-925,-926,
            -926,-927,-927,-927,-928,-928,-929,-929,-930,-930,
            -930,-931,-931,-932,-932,-932,-933,-933,-934,-934,
            -935,-935,-935,-936,-936,-937,-937,-937,-938,-938,
            -939,-939,-939,-940,-940,-941,-941,-941,-942,-942,
            -943,-943,-943,-944,-944,-944,-945,-945,-946,-946,
            -946,-947,-947,-948,-948,-948,-949,-949,-949,-950,
            -950,-950,-951,-951,-952,-952,-952,-953,-953,-953,
            -954,-954,-955,-955,-955,-956,-956,-956,-957,-957,
            -957,-958,-958,-958,-959,-959,-959,-960,-960,-961,
            -961,-961,-962,-962,-962,-963,-963,-963,-964,-964,
            -964,-965,-965,-965,-966,-966,-966,-967,-967,-967,
            -968,-968,-968,-969,-969,-969,-970,-970,-970,-970,
            -971,-971,-971,-972,-972,-972,-973,-973,-973,-974,
            -974,-974,-975,-975,-975,-975,-976,-976,-976,-977,
            -977,-977,-978,-978,-978,-978,-979,-979,-979,-980,
            -980,-980,-980,-981,-981,-981,-982,-982,-982,-982,
            -983,-983,-983,-984,-984,-984,-984,-985,-985,-985,
            -985,-986,-986,-986,-987,-987,-987,-987,-988,-988,
            -988,-988,-989,-989,-989,-989,-990,-990,-990,-990,
            -991,-991,-991,-991,-992,-992,-992,-992,-993,-993,
            -993,-993,-994,-994,-994,-994,-995,-995,-995,-995,
            -996,-996,-996,-996,-996,-997,-997,-997,-997,-998,
            -998,-998,-998,-998,-999,-999,-999,-999,-1000,-1000,
            -1000,-1000,-1000,-1001,-1001,-1001,-1001,-1001,-1002,-1002,
            -1002,-1002,-1002,-1003,-1003,-1003,-1003,-1003,-1004,-1004,
            -1004,-1004,-1004,-1005,-1005,-1005,-1005,-1005,-1006,-1006,
            -1006,-1006,-1006,-1006,-1007,-1007,-1007,-1007,-1007,-1008,
            -1008,-1008,-1008,-1008,-1008,-1009,-1009,-1009,-1009,-1009,
            -1009,-1010,-1010,-1010,-1010,-1010,-1010,-1011,-1011,-1011,
            -1011,-1011,-1011,-1011,-1012,-1012,-1012,-1012,-1012,-1012,
            -1013,-1013,-1013,-1013,-1013,-1013,-1013,-1014,-1014,-1014,
            -1014,-1014,-1014,-1014,-1014,-1015,-1015,-1015,-1015,-1015,
            -1015,-1015,-1016,-1016,-1016,-1016,-1016,-1016,-1016,-1016,
            -1016,-1017,-1017,-1017,-1017,-1017,-1017,-1017,-1017,-1017,
            -1018,-1018,-1018,-1018,-1018,-1018,-1018,-1018,-1018,-1019,
            -1019,-1019,-1019,-1019,-1019,-1019,-1019,-1019,-1019,-1019,
            -1020,-1020,-1020,-1020,-1020,-1020,-1020,-1020,-1020,-1020,
            -1020,-1020,-1021,-1021,-1021,-1021,-1021,-1021,-1021,-1021,
            -1021,-1021,-1021,-1021,-1021,-1021,-1022,-1022,-1022,-1022,
            -1022,-1022,-1022,-1022,-1022,-1022,-1022,-1022,-1022,-1022,
            -1022,-1022,-1022,-1022,-1022,-1023,-1023,-1023,-1023,-1023,
            -1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,
            -1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,
            -1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,
            -1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1023,-1024,-1024,
        };

    public static readonly int[] asinTable = {
                0,    1,    2,    3,    4,    5,    6,    7,    8,    9,
                10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
                20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
                30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
                40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
                50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
                60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
                70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
                80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
                90,   91,   92,   93,   94,   95,   96,   97,   98,   99,
                100,  101,  102,  103,  104,  105,  106,  107,  108,  109,
                110,  111,  112,  113,  114,  115,  116,  117,  118,  119,
                120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
                130,  131,  132,  133,  134,  135,  136,  137,  138,  139,
                140,  141,  142,  143,  144,  145,  146,  147,  148,  149,
                150,  151,  152,  153,  154,  155,  156,  157,  158,  159,
                160,  161,  162,  163,  164,  165,  166,  167,  168,  169,
                170,  171,  172,  173,  174,  175,  176,  177,  178,  179,
                180,  181,  182,  183,  185,  186,  187,  188,  189,  190,
                191,  192,  193,  194,  195,  196,  197,  198,  199,  200,
                201,  202,  203,  204,  205,  206,  207,  208,  209,  210,
                211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
                221,  222,  223,  224,  225,  226,  227,  228,  229,  230,
                231,  233,  234,  235,  236,  237,  238,  239,  240,  241,
                242,  243,  244,  245,  246,  247,  248,  249,  250,  251,
                252,  253,  254,  255,  256,  257,  258,  259,  260,  261,
                262,  263,  264,  265,  267,  268,  269,  270,  271,  272,
                273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
                283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
                294,  295,  296,  297,  298,  299,  300,  301,  302,  303,
                304,  305,  306,  307,  308,  309,  310,  311,  312,  313,
                314,  315,  317,  318,  319,  320,  321,  322,  323,  324,
                325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
                335,  337,  338,  339,  340,  341,  342,  343,  344,  345,
                346,  347,  348,  349,  350,  351,  352,  354,  355,  356,
                357,  358,  359,  360,  361,  362,  363,  364,  365,  366,
                367,  368,  369,  371,  372,  373,  374,  375,  376,  377,
                378,  379,  380,  381,  382,  383,  385,  386,  387,  388,
                389,  390,  391,  392,  393,  394,  395,  396,  397,  399,
                400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
                410,  412,  413,  414,  415,  416,  417,  418,  419,  420,
                421,  422,  424,  425,  426,  427,  428,  429,  430,  431,
                432,  433,  434,  436,  437,  438,  439,  440,  441,  442,
                443,  444,  445,  447,  448,  449,  450,  451,  452,  453,
                454,  455,  457,  458,  459,  460,  461,  462,  463,  464,
                465,  467,  468,  469,  470,  471,  472,  473,  474,  475,
                477,  478,  479,  480,  481,  482,  483,  484,  486,  487,
                488,  489,  490,  491,  492,  493,  495,  496,  497,  498,
                499,  500,  501,  502,  504,  505,  506,  507,  508,  509,
                510,  512,  513,  514,  515,  516,  517,  518,  520,  521,
                522,  523,  524,  525,  526,  528,  529,  530,  531,  532,
                533,  535,  536,  537,  538,  539,  540,  541,  543,  544,
                545,  546,  547,  548,  550,  551,  552,  553,  554,  555,
                557,  558,  559,  560,  561,  562,  564,  565,  566,  567,
                568,  569,  571,  572,  573,  574,  575,  577,  578,  579,
                580,  581,  582,  584,  585,  586,  587,  588,  590,  591,
                592,  593,  594,  596,  597,  598,  599,  600,  602,  603,
                604,  605,  606,  608,  609,  610,  611,  612,  614,  615,
                616,  617,  619,  620,  621,  622,  623,  625,  626,  627,
                628,  629,  631,  632,  633,  634,  636,  637,  638,  639,
                641,  642,  643,  644,  646,  647,  648,  649,  650,  652,
                653,  654,  655,  657,  658,  659,  660,  662,  663,  664,
                665,  667,  668,  669,  670,  672,  673,  674,  676,  677,
                678,  679,  681,  682,  683,  684,  686,  687,  688,  690,
                691,  692,  693,  695,  696,  697,  699,  700,  701,  702,
                704,  705,  706,  708,  709,  710,  711,  713,  714,  715,
                717,  718,  719,  721,  722,  723,  725,  726,  727,  729,
                730,  731,  733,  734,  735,  737,  738,  739,  740,  742,
                743,  745,  746,  747,  749,  750,  751,  753,  754,  755,
                757,  758,  759,  761,  762,  763,  765,  766,  768,  769,
                770,  772,  773,  774,  776,  777,  778,  780,  781,  783,
                784,  785,  787,  788,  790,  791,  792,  794,  795,  797,
                798,  799,  801,  802,  804,  805,  806,  808,  809,  811,
                812,  814,  815,  816,  818,  819,  821,  822,  824,  825,
                827,  828,  829,  831,  832,  834,  835,  837,  838,  840,
                841,  843,  844,  846,  847,  848,  850,  851,  853,  854,
                856,  857,  859,  860,  862,  863,  865,  866,  868,  869,
                871,  872,  874,  876,  877,  879,  880,  882,  883,  885,
                886,  888,  889,  891,  892,  894,  896,  897,  899,  900,
                902,  903,  905,  907,  908,  910,  911,  913,  914,  916,
                918,  919,  921,  923,  924,  926,  927,  929,  931,  932,
                934,  936,  937,  939,  940,  942,  944,  945,  947,  949,
                950,  952,  954,  955,  957,  959,  960,  962,  964,  966,
                967,  969,  971,  972,  974,  976,  978,  979,  981,  983,
                985,  986,  988,  990,  992,  993,  995,  997,  999, 1000,
            1002, 1004, 1006, 1008, 1009, 1011, 1013, 1015, 1017, 1019,
            1020, 1022, 1024, 1026, 1028, 1030, 1032, 1033, 1035, 1037,
            1039, 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1054, 1056,
            1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076,
            1078, 1080, 1082, 1084, 1086, 1088, 1091, 1093, 1095, 1097,
            1099, 1101, 1103, 1105, 1107, 1109, 1112, 1114, 1116, 1118,
            1120, 1122, 1125, 1127, 1129, 1131, 1133, 1136, 1138, 1140,
            1142, 1145, 1147, 1149, 1152, 1154, 1156, 1159, 1161, 1163,
            1166, 1168, 1171, 1173, 1175, 1178, 1180, 1183, 1185, 1188,
            1190, 1193, 1195, 1198, 1201, 1203, 1206, 1208, 1211, 1214,
            1216, 1219, 1222, 1224, 1227, 1230, 1233, 1236, 1238, 1241,
            1244, 1247, 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
            1274, 1277, 1280, 1283, 1287, 1290, 1293, 1297, 1300, 1303,
            1307, 1310, 1314, 1317, 1321, 1324, 1328, 1332, 1336, 1339,
            1343, 1347, 1351, 1355, 1360, 1364, 1368, 1372, 1377, 1381,
            1386, 1391, 1395, 1400, 1405, 1410, 1416, 1421, 1427, 1433,
            1438, 1445, 1451, 1458, 1465, 1472, 1480, 1488, 1497, 1507,
            1517, 1530, 1544, 1563, 1608
        };

    public static readonly int[] atanTable =
    {
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
            11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
            31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
            41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
            51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
            61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
            71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
            81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
            91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
            101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
            111, 112, 113, 114, 115, 116, 116, 117, 118, 119,
            120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
            130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
            140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
            150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
            160, 161, 162, 163, 164, 165, 166, 167, 167, 168,
            169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
            179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
            189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
            198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
            208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
            218, 219, 220, 221, 221, 222, 223, 224, 225, 226,
            227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
            237, 238, 239, 240, 240, 241, 242, 243, 244, 245,
            246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
            256, 256, 257, 258, 259, 260, 261, 262, 263, 264,
            265, 266, 267, 268, 269, 270, 271, 271, 272, 273,
            274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
            284, 284, 285, 286, 287, 288, 289, 290, 291, 292,
            293, 294, 295, 296, 296, 297, 298, 299, 300, 301,
            302, 303, 304, 305, 306, 307, 307, 308, 309, 310,
            311, 312, 313, 314, 315, 316, 317, 317, 318, 319,
            320, 321, 322, 323, 324, 325, 326, 326, 327, 328,
            329, 330, 331, 332, 333, 334, 335, 335, 336, 337,
            338, 339, 340, 341, 342, 343, 344, 344, 345, 346,
            347, 348, 349, 350, 351, 352, 352, 353, 354, 355,
            356, 357, 358, 359, 359, 360, 361, 362, 363, 364,
            365, 366, 367, 367, 368, 369, 370, 371, 372, 373,
            374, 374, 375, 376, 377, 378, 379, 380, 380, 381,
            382, 383, 384, 385, 386, 387, 387, 388, 389, 390,
            391, 392, 393, 393, 394, 395, 396, 397, 398, 399,
            399, 400, 401, 402, 403, 404, 405, 405, 406, 407,
            408, 409, 410, 410, 411, 412, 413, 414, 415, 416,
            416, 417, 418, 419, 420, 421, 421, 422, 423, 424,
            425, 426, 426, 427, 428, 429, 430, 431, 432, 432,
            433, 434, 435, 436, 436, 437, 438, 439, 440, 441,
            441, 442, 443, 444, 445, 446, 446, 447, 448, 449,
            450, 450, 451, 452, 453, 454, 455, 455, 456, 457,
            458, 459, 459, 460, 461, 462, 463, 464, 464, 465,
            466, 467, 468, 468, 469, 470, 471, 472, 472, 473,
            474, 475, 476, 476, 477, 478, 479, 480, 480, 481,
            482, 483, 484, 484, 485, 486, 487, 487, 488, 489,
            490, 491, 491, 492, 493, 494, 495, 495, 496, 497,
            498, 498, 499, 500, 501, 502, 502, 503, 504, 505,
            505, 506, 507, 508, 509, 509, 510, 511, 512, 512,
            513, 514, 515, 516, 516, 517, 518, 519, 519, 520,
            521, 522, 522, 523, 524, 525, 525, 526, 527, 528,
            528, 529, 530, 531, 531, 532, 533, 534, 535, 535,
            536, 537, 538, 538, 539, 540, 540, 541, 542, 543,
            543, 544, 545, 546, 546, 547, 548, 549, 549, 550,
            551, 552, 552, 553, 554, 555, 555, 556, 557, 557,
            558, 559, 560, 560, 561, 562, 563, 563, 564, 565,
            566, 566, 567, 568, 568, 569, 570, 571, 571, 572,
            573, 573, 574, 575, 576, 576, 577, 578, 578, 579,
            580, 581, 581, 582, 583, 583, 584, 585, 586, 586,
            587, 588, 588, 589, 590, 590, 591, 592, 593, 593,
            594, 595, 595, 596, 597, 597, 598, 599, 600, 600,
            601, 602, 602, 603, 604, 604, 605, 606, 606, 607,
            608, 609, 609, 610, 611, 611, 612, 613, 613, 614,
            615, 615, 616, 617, 617, 618, 619, 619, 620, 621,
            621, 622, 623, 624, 624, 625, 626, 626, 627, 628,
            628, 629, 630, 630, 631, 632, 632, 633, 634, 634,
            635, 636, 636, 637, 637, 638, 639, 639, 640, 641,
            641, 642, 643, 643, 644, 645, 645, 646, 647, 647,
            648, 649, 649, 650, 651, 651, 652, 653, 653, 654,
            654, 655, 656, 656, 657, 658, 658, 659, 660, 660,
            661, 662, 662, 663, 663, 664, 665, 665, 666, 667,
            667, 668, 668, 669, 670, 670, 671, 672, 672, 673,
            674, 674, 675, 675, 676, 677, 677, 678, 678, 679,
            680, 680, 681, 682, 682, 683, 683, 684, 685, 685,
            686, 687, 687, 688, 688, 689, 690, 690, 691, 691,
            692, 693, 693, 694, 694, 695, 696, 696, 697, 697,
            698, 699, 699, 700, 700, 701, 702, 702, 703, 703,
            704, 705, 705, 706, 706, 707, 708, 708, 709, 709,
            710, 711, 711, 712, 712, 713, 714, 714, 715, 715,
            716, 717, 717, 718, 718, 719, 719, 720, 721, 721,
            722, 722, 723, 723, 724, 725, 725, 726, 726, 727,
            728, 728, 729, 729, 730, 730, 731, 732, 732, 733,
            733, 734, 734, 735, 736, 736, 737, 737, 738, 738,
            739, 739, 740, 741, 741, 742, 742, 743, 743, 744,
            745, 745, 746, 746, 747, 747, 748, 748, 749, 750,
            750, 751, 751, 752, 752, 753, 753, 754, 754, 755,
            756, 756, 757, 757, 758, 758, 759, 759, 760, 760,
            761, 762, 762, 763, 763, 764, 764, 765, 765, 766,
            766, 767, 767, 768, 769, 769, 770, 770, 771, 771,
            772, 772, 773, 773, 774, 774, 775, 775, 776, 777,
            777, 778, 778, 779, 779, 780, 780, 781, 781, 782,
            782, 783, 783, 784, 784, 785, 785, 786, 786, 787,
            787, 788, 789, 789, 790, 790, 791, 791, 792, 792,
            793, 793, 794, 794, 795, 795, 796, 796, 797, 797,
            798, 798, 799, 799, 800, 800, 801, 801, 802, 802,
            803, 803, 804, 804,
        };
}